package com.zl.gmadmin.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zl.gmadmin.entity.SysJob;
import com.zl.gmadmin.entity.SysRole;
import com.zl.gmadmin.entity.SysUser;
import com.zl.gmadmin.payload.UserQueryCriteria;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Optional;

/**
 * @author zhangliang
 * @version 1.0
 * @date 2021/2/2 14:59
 */

public interface SysUserService extends IService<SysUser> {


    /**
     * 分页查询用户信息表
     * @param queryCriteria 查询参数
      * @param page   分页
     * @return
     */
    Object selectPageVo(UserQueryCriteria queryCriteria, Page<SysUser> page);


    /**
     * 根据用户名、邮箱、手机号查询用户
     * @param usernameOrEmailOrPhone
     * @return
     */
    Optional<SysUser> findByUsernameOrEmailOrPhone(String usernameOrEmailOrPhone);


    /**
     * 新增用户
     * @param user  用户信息
     * @param roles  角色
     * @param sysJobs  工作
     * @return
     */
   Object insert(SysUser user, List<SysRole> roles,List<SysJob> sysJobs);

    /**
     * 根据用户id批量删除用户
     * @param ids
     */
    void delUsers(List<Long> ids);



    /**
     * 更新用户信息
     * @param sysUser
     * @param sysRoles
     * @param sysJobs
     * @return
     */
    boolean updateUserById(SysUser sysUser,List<SysRole> sysRoles,List<SysJob> sysJobs);



    /**
     * 导出用户信息，如果ids不存在就是全部导出，如果存在就是指定导出
     * @param response
     * @param ids
     * @throws IOException
     */
    void download(HttpServletResponse response, List<Long> ids) throws IOException;
}
